﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace stefab.Musique
{
    public class Album
    {
            
        #region Champs
        /// <summary>
        /// Obtient l'identifiant de l'Album.
        /// </summary>
        private string _id = "Inconnu";

        

        /// <summary>
        /// Obtient le titre de l'Album.
        /// </summary>
        private string _title = "Inconnu";

        

        /// <summary>
        /// Obtient le lien Deezer de l'Album
        /// </summary>
        private string _link = "Inconnu";

        

        /// <summary>
        /// Obtient l'image de la pochette de l'Album
        /// </summary>
        private string _cover = "Inconnu";

        

        /// <summary>
        /// Obtient le label de l'Album
        /// </summary>
        private string _label = "inconnu";

        

        /// <summary>
        /// Obtient la durée de l'Album
        /// </summary>
        private int _duration = 0;

        

        /// <summary>
        /// Obtient le nombre de fans de l'Album.
        /// </summary>
        private int _nbFans = 0;

        
        
        /// <summary>
        /// Obtient la date de sortie de l'Album.
        /// </summary>
        private DateTime _releaseDate = DateTime.MinValue;

        

        /// <summary>
        /// Obtient l'Artiste de l'album
        /// </summary>
        private Artist _theArtist;

        

        /// <summary>
        /// Obtient la liste des morceaux de l'Album
        /// </summary>
        private List<Track> _lesTracks;

        

        #endregion

        #region Propriétés
        public string id
        {
            get { return _id; }
            set { _id = value; }
        }

        public string title
        {
            get { return _title; }
            set { _title = value; }
        }

        public string link
        {
            get { return _link; }
            set { _link = value; }
        }

        public string cover
        {
            get { return _cover; }
            set { _cover = value; }
        }

        public string label
        {
            get { return _label; }
            set { _label = value; }
        }

        public int duration
        {
            get { return _duration; }
            set { _duration = value; }
        }

        public int nbFans
        {
            get { return _nbFans; }
            set { _nbFans = value; }
        }

        public DateTime releaseDate
        {
            get { return _releaseDate; }
            set { _releaseDate = value; }
        }

        public Artist theArtist
        {
            get { return _theArtist; }
            set { _theArtist = value; }
        }

        public List<Track> lesTracks
        {
            get { return _lesTracks; }
            set { _lesTracks = value; }
        }
        #endregion
        #region Constructeurs
        /// <summary>
        /// Initialise une nouvelle instance par défaut de la classe Album.
        /// Les propriétés de l'album ne peuvent pas être modifiées par la suite.
        /// </summary>
        public Album()
        {
        }

        /// <summary>
        /// Initialise une nouvelle instance de la classe Album.
        /// </summary>
        /// <param name="_id">Identifiant de l'album.</param>
        /// <param name="title">Nom de l'album.</param>
        /// <param name="cover">Url de l'image de l'album.</param>

        public Album(string id, string title, string cover)
        {
            this._id = id;
            this._title = title;
            this._cover = cover;

        }

        /// <summary>
        /// Initialise une nouvelle instance de la classe Album.
        /// </summary>
        /// <param name="_id">Identifiant de l'album.</param>
        /// <param name="title">Nom de l'album.</param>
        /// <param name="cover">Url de l'image de l'album.</param>
        /// <param name="theArtist">Artiste de l'album.</param>
        public Album(string id, string title, string cover, Artist theArtist)
        {
            this._id = id;
            this._title = title;
            this._cover = cover;
            this._theArtist = theArtist;

        }


        /// <summary>
        /// Initialise une nouvelle instance de la classe Album.
        /// </summary>
        /// <param name="id">Identifiant de l'album.</param>
        /// <param name="title">Nom de l'album.</param>
        /// <param name="link">Lien deezer de l'album</param>
        /// <param name="cover">Pochette de l'album</param>
        /// <param name="label">Label de l'album</param>
        /// <param name="duration">Durée de l'album</param>
        /// <param name="releaseDate">Date de sortie de l'album</param>
        /// <param name="theArtist">Artiste de l'album</param>
        public Album(string id, string title, string link, string cover, string label, int duration, DateTime releaseDate, Artist theArtist)
        {
            this._id = id;
            this._title = title;
            this._link = link;
            this._cover = cover;
            this._label = label;
            this._duration = duration;
            this._releaseDate = releaseDate;
            this._theArtist = theArtist;

        }

        

        #endregion
    }
}
